bin = GTK_BIN (scrolled_window);
/* Get possible scrollbar dimensions */
- gtk_widget_get_preferred_height (priv->hscrollbar, &sb_height, NULL);
- gtk_widget_get_preferred_width (priv->vscrollbar, &sb_width, NULL);
+ gtk_widget_measure (priv->vscrollbar, GTK_ORIENTATION_HORIZONTAL, -1,
+ &sb_width, NULL, NULL, NULL);
+ gtk_widget_measure (priv->hscrollbar, GTK_ORIENTATION_VERTICAL, -1,
+ &sb_height, NULL, NULL, NULL);
if (priv->hscrollbar_policy == GTK_POLICY_ALWAYS)
priv->hscrollbar_visible = TRUE;
/* Determine scrollbar visibility first via hfw apis */
if (gtk_widget_get_request_mode (child) == GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH)
{
- if (hscroll_policy == GTK_SCROLL_MINIMUM)
- gtk_widget_get_preferred_width (child, &child_scroll_width, NULL);
- else
- gtk_widget_get_preferred_width (child, NULL, &child_scroll_width);
+ if (hscroll_policy == GTK_SCROLL_MINIMUM)
+ gtk_widget_measure (child, GTK_ORIENTATION_HORIZONTAL, -1,
+ &child_scroll_width, NULL, NULL, NULL);
+ else
+ gtk_widget_measure (child, GTK_ORIENTATION_HORIZONTAL, -1,
+ NULL, &child_scroll_width, NULL, NULL);
if (priv->vscrollbar_policy == GTK_POLICY_AUTOMATIC)
{
/* First try without a vertical scrollbar if the content will fit the height
* given the extra width of the scrollbar */
if (vscroll_policy == GTK_SCROLL_MINIMUM)
- gtk_widget_get_preferred_height_for_width (child,
- MAX (allocation->width, child_scroll_width),
- &child_scroll_height, NULL);
- else
- gtk_widget_get_preferred_height_for_width (child,
- MAX (allocation->width, child_scroll_width),
- NULL, &child_scroll_height);
+ gtk_widget_measure (child, GTK_ORIENTATION_VERTICAL,
+ MAX (allocation->width, child_scroll_width),
+ &child_scroll_height, NULL, NULL, NULL);
+ else
+ gtk_widget_measure (child, GTK_ORIENTATION_VERTICAL,
+ MAX (allocation->width, child_scroll_width),
+ NULL, &child_scroll_height, NULL, NULL);
if (priv->hscrollbar_policy == GTK_POLICY_AUTOMATIC)
{
}
else /* GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT */
{
- if (vscroll_policy == GTK_SCROLL_MINIMUM)
- gtk_widget_get_preferred_height (child, &child_scroll_height, NULL);
- else
- gtk_widget_get_preferred_height (child, NULL, &child_scroll_height);
+ if (vscroll_policy == GTK_SCROLL_MINIMUM)
+ gtk_widget_measure (child, GTK_ORIENTATION_VERTICAL, -1,
+ &child_scroll_height, NULL, NULL, NULL);
+ else
+ gtk_widget_measure (child, GTK_ORIENTATION_VERTICAL, -1,
+ NULL, &child_scroll_height, NULL, NULL);
if (priv->hscrollbar_policy == GTK_POLICY_AUTOMATIC)
{
/* First try without a horizontal scrollbar if the content will fit the width
* given the extra height of the scrollbar */
if (hscroll_policy == GTK_SCROLL_MINIMUM)
- gtk_widget_get_preferred_width_for_height (child,
- MAX (allocation->height, child_scroll_height),
- &child_scroll_width, NULL);
- else
- gtk_widget_get_preferred_width_for_height (child,
- MAX (allocation->height, child_scroll_height),
- NULL, &child_scroll_width);
+ gtk_widget_measure (child, GTK_ORIENTATION_HORIZONTAL,
+ MAX (allocation->height, child_scroll_height),
+ &child_scroll_width, NULL, NULL, NULL);
+ else
+ gtk_widget_measure (child, GTK_ORIENTATION_HORIZONTAL,
+ MAX (allocation->height, child_scroll_height),
+ NULL, &child_scroll_width, NULL, NULL);
if (priv->vscrollbar_policy == GTK_POLICY_AUTOMATIC)
{
*/
if (child && gtk_widget_get_visible (child))
{
+ gtk_widget_measure (child, orientation, -1,
+ &min_child_size, &nat_child_size,
+ NULL, NULL);
+
+
if (orientation == GTK_ORIENTATION_HORIZONTAL)
{
- gtk_widget_get_preferred_width (child,
- &min_child_size,
- &nat_child_size);
-
if (priv->propagate_natural_width)
natural_req.width += nat_child_size;
}
else /* GTK_ORIENTATION_VERTICAL */
{
- gtk_widget_get_preferred_height (child,
- &min_child_size,
- &nat_child_size);
-
if (priv->propagate_natural_height)
natural_req.height += nat_child_size;
priv = scrolled_window->priv;
/* Get possible scrollbar dimensions */
- gtk_widget_get_preferred_height (priv->hscrollbar, &sb_height, NULL);
- gtk_widget_get_preferred_width (priv->vscrollbar, &sb_width, NULL);
+ gtk_widget_measure (priv->vscrollbar, GTK_ORIENTATION_HORIZONTAL, -1,
+ &sb_width, NULL, NULL, NULL);
+ gtk_widget_measure (priv->hscrollbar, GTK_ORIENTATION_VERTICAL, -1,
+ &sb_height, NULL, NULL, NULL);
gtk_css_gadget_get_content_allocation (priv->gadget, &content_allocation, NULL);
priv = scrolled_window->priv;
gtk_scrolled_window_inner_allocation (widget, &content_allocation);
- gtk_widget_get_preferred_height (priv->hscrollbar, &sb_height, NULL);
- gtk_widget_get_preferred_width (priv->vscrollbar, &sb_width, NULL);
+ gtk_widget_measure (priv->vscrollbar, GTK_ORIENTATION_HORIZONTAL, -1,
+ &sb_width, NULL, NULL, NULL);
+ gtk_widget_measure (priv->hscrollbar, GTK_ORIENTATION_VERTICAL, -1,
+ &sb_height, NULL, NULL, NULL);
if (scrollbar == priv->hscrollbar)
{